
/**
 * 说明：
 *
 * @Auther: lijinfeng
 * @Date: 2024/4/13
 */
public class SsoInterceptors implements HandlerInterceptor {
    /*
     * preHandle预处理方法:
     *   参数:
     *       Object handler:被拦截的控制器对象
     *   返回值boolean:
     *       true:请求通过了拦截器的验证，可以执行处理器方法。
     *       false:请求没有通过拦截器的验证，请求到达拦截器就截止了。
     *   特点:
     *       1.方法在控制器(Controller)方法之前先执行。
     *         用户的请求先到达此方法
     *       2.在这个方法中可以获取请求的信息，验证请求是否符合要求。
     *         可以验证用户是否登录，验证用户是否有权限访问某个链接地址（url）。
     *         如果验证失败，可以截断请求，请求不能被处理
     *         如果验证成功，可以放行请求，此时控制方法才执行
     * */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("进入SsoInterceptors");

        return true;
    }

    /*
     * postHandle后处理方法:
     *   参数:
     *       Object handler:被拦截的控制器(Controller)对象
     *       ModelAndView mv:处理器方法的返回值
     *   特点:
     *       1.在处理器方法之后执行的
     *       2.能够获取到处理器方法的返回值ModelAndView，可以修改ModelAndView中的数据和视图，
     *       可以影响到最后的执行结果。
     *       3.它主要是对原来的执行结果做二次修正。
     * */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    /*
     * afterCompletion:最后执行的方法
     *   参数:
     *       Object handler:被拦截的处理器对象
     *       Exception ex:程序中发生的异常
     *   特点:
     *       1.请求处理完成后执行的。框架中规定，当你的视图处理完成后，对视图执行了forward，就视为请求完成。
     *       2.一般是做资源回收工作的，程序的请求过程中，创建了一些对象，在这里可以删除，把占用的内存回收。
     * */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }

}
